#pragma once

#include <iostream>
#include <opencv2/opencv.hpp>

class ErodeTrackbarData
{
public:
	cv::Mat image;
	int shape;
	int kernelSize;
	int iterations;
public:
	ErodeTrackbarData(const cv::Mat& image, int shape, int kernelSize, int iterations)
		: image(image), shape(shape), kernelSize(kernelSize), iterations(iterations) { }
};

void demo_structuringElement(void);
void demo_erode(void);
void demo_dilate(void);
void demo_open_operator(void);
void demo_close_operator(void);
void demo_morphological_gradient(void);
void demo_topHat(void);
void demo_blackHat(void);

void _demo_erode_TrackbarCallback(int pos, void* userdata);
void _demo_dilate_TrackbarCallback(int pos, void* userdata);

